const express=require('express');
const bodyParser=require('body-parser');
const cookieParser=require('cookie-parser');
// 引入jsonwebtoken
const jwt=require('jsonwebtoken');
const app=express();

app.use(bodyParser.urlencoded({extended:true}));
app.use(cookieParser());
// json web token JWT
// 创建jwt密钥
const secret='ysn';
const user={};
// 注册
app.post('/register',(req,res)=>{
    user=req.body;
    res.send('注册成功！');
})
// 登录
app.post('/login',(req,res)=>{
    if(req.body.name==user.name&&req.body.password==user.password){
        const userItem=req.body;
        // 给useritem加过期时间，当过期之后自动删除
        userItem.exp=Date.now() + 120*1000;
        // sign创建token
        jwt.sign(userItem,secret,(err,token)=>{
            console.log('这是token');
            console.log(token);
            // 将形成的token 作为cookie返回浏览器
            res.cookie('token',token,{
                maxAge:30*1000
            })
            res.send('登录成功，携带cookie字符串');
        })
        res.send('登录成功！');
    }else{
        res.send('用户名或密码错误');
    }
})
// 验证
app.get('/test',(req,res)=>{
    console.log(req.cookies);
    // 找到随着请求报文和响应报文传递的cookie中的token
    // 验证该token是否是当初在jwt中产生的token
    jwt.verify(req.cookies.token,secret,(err,authData)=>{
        if(err){
            console.log(err);
        }else{
            console.log(authData);
            res.send('核验token');
        }
    })
})


// 监听端口号
app.listen(8080,err=>{
    if(!err) console.log('服务器启动成功');
    else console.log(err);
})